package com.zuipin.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.zuipin.entity.shoppingCart.ProRuleSet;
import com.zuipin.entity.shoppingCart.RuleSet;
import com.zuipin.util.Pagination;
import com.zuipin.vo.SpecialPriceProVo;
import com.zuipin.vo.SpecialPriceVo;

/**
 * @description : RuleSetMapper数据库操作接口类
 * @author : wuhaijun
 * @date : 2017年3月28日 上午11:48:46
 */
public interface RuleSetMapper {
	/**
	 * 
	 * 查询（根据主键ID查询）
	 * 
	 **/
	RuleSet selectByPrimaryKey(@Param("id") Long id);
	
	/**
	 * 
	 * 删除（根据主键ID删除）
	 * 
	 **/
	int deleteByPrimaryKey(@Param("id") Long id);
	
	/**
	 * 
	 * 添加
	 * 
	 **/
	int insert(RuleSet record);
	
	/**
	 * 
	 * 添加 （匹配有值的字段）
	 * 
	 **/
	int insertSelective(RuleSet record);
	
	/**
	 * 
	 * 修改 （匹配有值的字段）
	 * 
	 **/
	int updateByPrimaryKeySelective(RuleSet record);
	
	/**
	 * 
	 * 修改（根据主键ID修改）
	 * 
	 **/
	int updateByPrimaryKey(RuleSet record);
	
	/**
	 * @description : 查询规则ID
	 * @author : wuhaijun
	 * @date : 2017年4月29日 下午3:25:46
	 */
	public RuleSet queryRuleSetById(Long id);
	
	/**
	 * @description : 查询特价规则
	 * @author : wuhaijun
	 * @date : 2017年5月9日 下午9:05:51
	 */
	public RuleSet querySpecialPriceRule(@Param("sysId") Long sysId, @Param("device") String device, @Param("currTime") String currTime, @Param("proSku") String proSku);
	
	/**
	 * @description : 查询特价商品
	 * @author : wuhaijun
	 * @date : 2017年5月9日 下午9:10:18
	 */
	public ProRuleSet querySpecialPricePro(String proSku, Long ruleId);
	
	/**
	 * @description : 查询赠品规则
	 * @author : wuhaijun
	 * @date : 2017年5月9日 下午9:05:57
	 */
	public RuleSet queryGiveProRule(@Param("sysId") Long sysId, @Param("device") String device, @Param("currTime") String currTime, @Param("proSku") String proSku);
	
	/**
	 * @description : 在当前时间，查询有效的特价规则
	 * @author : wuhaijun
	 * @date : 2017年5月16日 上午10:16:13
	 */
	public List<RuleSet> querySpecialPriceRuleByCurrTime(@Param("currTime") String currTime);
	
	/**
	 * @description : 根据特价规则ID查询特价商品
	 * @author : wuhaijun
	 * @date : 2017年5月16日 上午11:01:04
	 */
	public List<ProRuleSet> querySpecialPriceProByRuleId(@Param("ruleId") Long ruleId);
	
	List<RuleSet> findRuleList(@Param("rs") RuleSet rs, @Param("orderBy") String orderBy, @Param("sort") String sort);
	
	List<RuleSet> findSpecialRuleList(@Param("rs") RuleSet rs, @Param("orderBy") String orderBy, @Param("sort") String sort, @Param("proSku") String proSku);
	
	public List<SpecialPriceVo> findSpecialPriceBySkus(@Param("sysId") Long sysId, @Param("skus") List<String> skus, @Param("device") String device);
	
	List<RuleSet> findRuleSetListByIds(@Param("ruleIds") List<Long> ruleIds, @Param("rs") RuleSet rs);
	
	/** 
	 * 
	 * @Title: findRuleListByMap 
	 * @author: wuyicheng
	 * @date: 2017年7月13日下午2:25:29 
	 * @param map
	 * @return
	 * @return: List<RuleSet>
	 * @throws 
	 */
	List<RuleSet> findRuleListByMap(Map<String, Object> map);
	
	/**
	 * 
	 * 查询（根据主键序列号查询）
	 * 
	 **/
	RuleSet selectBySerialNumber(@Param("serialNumber") String serialNumber);
	
	public void modityUseNumByRuleSet(@Param("ruleId") Long ruleSetId, @Param("useNum") int useNum);
	
	/**
	 * 查询当前时间存在的特价商品规则
	 */
	public List<SpecialPriceProVo> getSpecialPriceRule(@Param("nowTime") String nowTime, @Param("device") String device, @Param("page") Pagination page);
}
